home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / CRKUTIL2.DSK / SSI RDOS.txt < prev    next >
Text File  |  2014-09-09  |  21KB  |  622 lines

  1. ***************************************
  2. *                                     *
  3. *                                     *
  4. *     KRAKOWICZ'S KRACKING KORNER     *
  5. *                                     *
  6. *             SSI'S RDOS              *
  7. *                                     *
  8. *                                     *
  9. ***************************************
  10.  
  11.  
  12.      IT'S REALLY NOT FAIR WHEN ONE
  13. PUBLISHER HAS A SYSTEM THAT KEEPS THEIR
  14. SOFTWARE FROM BEING CONVENIENTLY BACKED
  15. UP, ESPECIALLY WHEN SO MANY OF THE
  16. OTHER "PROTECTION" SCHEMES HAVE FALLEN
  17. TO THE GROWING CORPS OF TALENTED
  18. KRACKISTS. WITH THAT IN MIND, AND
  19. BECAUSE WE ALL LOVE A CHALLENGE, WE
  20. WILL TAKE A LONG LOOK AT THE APPROACH
  21. USED BY STRATEGIC SIMULATIONS, INC.
  22. (SSI) IN PROVIDING COPY PROTECTION FOR
  23. THEIR SERIES OF WAR SIMULATIONS AND
  24. "RAPID-FIRE" SERIES, AS WELL AS SOME
  25. RECENT GAMES WHICH HAVE A LITTLE
  26. REDEEMING SOCIAL MERIT: EPIDEMIC,
  27. RINGSIDE SEAT, AND GALACTIC ADVENTURES.
  28.  
  29.      AS WE'VE DISCUSSED IN THE BASICS
  30. OF KRACKING SERIES, YOU CAN EITHER
  31. PROTECT A PROGRAM BY VARIOUS MEANS, OR
  32. YOU CAN PROTECT A DISK FULL OF PROGRAMS
  33. WITH SOME SORT OF DOS MODIFICATION.
  34. DOS MODIFICATIONS ARE USUALLY NOT TOO
  35. SUCCESSFUL, SINCE SOME ENTERPRISING
  36. PERSON OUT IN PIRATELAND WILL SOONER OR
  37. LATER FIGURE A WAY TO COPY ALL THE
  38. FILES ONTO A NORMAL DOS DISK, MAKING
  39. ALL THE DISK PROTECTION WORTHLESS.
  40. SSI'S ANSWER TO THIS PROBLEM WAS NOT
  41. ONLY TO WRITE AN EXTENSIVELY REVISED
  42. DOS, BUT TO COUPLE IT WITH
  43. "ENHANCEMENTS" TO APPLESOFT USING THE
  44. AMPERSAND VECTOR (MORE ON THIS LATER).
  45. THIS WAY, EVEN IF YOU COULD STRIP THE
  46. FILES OFF THE DISK, YOU WOULD NEED TO
  47. WRITE A DOS WHICH WAS:
  48.   A. DOS 3.3 COMPATIBLE,
  49.   B. AS SHORT AS RDOS ($B100-$BFFF),
  50.      SINCE THE PROGRAMS FREQUENTLY USE
  51.      ALL OF THE FREE SPACE, AND
  52.   C. CAPABLE OF CORRECTLY INTERPRETING
  53.      THE AMPERSAND COMMANDS WHICH ARE
  54.      LIBERALLY SPRINKLED THROUGH
  55.      ALL THE APPLESOFT PROGRAMS.
  56. THE AMOUNT OF EFFORT REQUIRED TO DO
  57. THIS HAS KEPT KRACKISTS AT BAY, AT
  58. LEAST UNTIL NOW.
  59.  
  60.      FIRST, HOW TO APPROACH THIS TYPE
  61. OF KRACKING JOB?  THE SEVENTH LAW OF
  62. KRACKING SAYS: "WHEN YOU'RE TOTALLY
  63. LOST, BOOT-TRACE" (I KNOW, I KNOW -- I
  64. PROMISE THAT I'LL WRITE A COMPLETE
  65. COLUMN ON BOOT-TRACING SOON. IF YOU
  66. JUST CAN'T WAIT, TRY TO GET HOLD OF THE
  67. HARDCORE MAGAZINE UPDATE 3.1, PAGES
  68. 6-15.  IT HAS A LUCID, WELL-EXAMPLED
  69. DISCUSSION OF THE BOOT-TRACING
  70. PROCESS). WHEN YOU LOAD T0, S0 INTO
  71. $800, YOU WILL IMMEDIATELY SEE THE
  72. FAMILIAR "BRODY LOADY" (NAMED AFTER
  73. THAT FUN-LOVING BUNCH OF SCANDAHOOVIANS
  74. AT BR0DERBUND) WHICH MOVES THE ENTIRE
  75. PAGE DOWN TO PAGE 2 AND JUMPS TO $20F
  76. TO COMPLETE THE BOOT. THIS IS A FAIRLY
  77. TRICKY BOOT WHICH HAS BEEN USED FOR
  78. ALL TYPES OF PROTECTION SCHEMES, BUT IF
  79. YOU PUZZLE OVER IT LONG ENOUGH, YOU'LL
  80. SEE THAT THE JMP ($003E) AT LOCATION
  81. 343 DOUBLES AS A JUMP TO THE SECTOR
  82. READ ROUTINE, THEN AS A JUMP TO THE
  83. PROGRAM START WHEN ALL THE SECTORS ARE
  84. READ IN. THE PROGRAM START IN THIS CASE
  85. IS $B300, WHICH IS A JMP $B974 THAT
  86. DROPS YOU INTO A DISCOURAGINGLY COMPLEX
  87. SERIES OF JSR'S AND JMP'S.
  88.  
  89.      AT THIS POINT, DISCRETION IS THE
  90. BETTER PART OF VALOR (REMEMBER THE
  91. SECOND LAW: THERE'S ALWAYS ANOTHER
  92. WAY). WHAT THE BOOT-TRACE HAS TOLD US
  93. IS THAT THE DOS CODE LIVES FROM $B300
  94. TO $BFFF, AND IS NOT STRAIGHTFORWARD,
  95. "LINEAR" CODE. YOU MAY RECALL THAT WE
  96. DESCRIBED HOW TO LIST AN RDOS APPLESOFT
  97. FILE IN BASICS 103: RESET, D6:00, C081,
  98. CTRL-C, "LIST". YOU WILL BE IMMEDIATELY
  99. STRUCK BY A WHOLE NEW LIST OF COMMANDS
  100. THAT MOTHER APPLE NEVER TOLD YOU ABOUT.
  101. THESE ARE AMPERSAND (&) COMMANDS WHICH
  102. HAVE BEEN ADDED TO IMPLEMENT THE RDOS
  103. COMMANDS, AND THEY WORK AS FOLLOWS:
  104. WHENEVER THE "&" IS ENCOUNTERED,
  105. APPLESOFT JUMPS TO LOCATION $3F5.
  106. LOOKING AT THAT LOCATION WILL TELL YOU
  107. WHERE THE AMPERSAND EVALUATION ROUTINE
  108. IS LOCATED; IN THIS CASE, IT CONTAINS
  109. 4C 03 B3 OR JMP $B303. EXAMINATION OF
  110. THE CODE THERE REVEALS THAT THE
  111. ACCUMULATOR IS COMPARED TO A TABLE OF
  112. NUMBERS IN $B320-$B330, AND THE ADDRESS
  113. OF THE ROUTINE TO BE EXECUTED IS PICKED
  114. UP FROM A TABLE IN $B331-$B352. YOU CAN
  115. EASILY SEE ALL THIS CODE BY RESETTING
  116. ANY OF THE RDOS SSI GAMES, AND IF
  117. YOU'RE REALLY INTERESTED, YOU CAN
  118. CONTACT YOUR LOCAL PIRATE FOR A COPY OF
  119. THE SOURCE CODE LISTINGS, IN BIG MAC
  120. FORMAT, FOR BOTH THE ORIGINAL AND DOS
  121. 3.3 COMPATIBLE VERSIONS OF RDOS. THE
  122. DISK ALSO CONTAINS OBJECT CODE FOR RDOS
  123. 3.3 AND LISTINGS OF THE OTHER PROGRAMS
  124. USED FOR SECONDARY PROTECTION AND
  125. INITIALIZING. IF THERE'S ENOUGH
  126. INTEREST, THE SYSOP MIGHT BE PERSUADED
  127. TO INCLUDE THEM ON HIS APPLE TREK
  128. KRACKING DISK #2.
  129.  
  130.      NOW WE'RE STARTING TO MAKE
  131. PROGRESS.  EACH TIME THE & COMMAND IS
  132. ENCOUNTERED, APPLESOFT OBLIGINGLY JUMPS
  133. UP TO $B303 WITH THE HEX VALUE OF THE
  134. NEXT BASIC TOKEN IN THE ACCUMULATOR,
  135. AND THEN DECIDES WHAT TO DO NEXT. THE
  136. TOKENS, WITH THEIR VALUE, SUBROUTINE
  137. ADDRESS START, AND FUNCTION ARE SHOWN
  138. BELOW:
  139.  
  140.   & --- HEX DEC ADDR  FUNCTION IN RDOS
  141.   ----- --- --- ----  ----------------
  142.   C      43  67 B353  CATALOG (&C AT)
  143.   LOAD   B6 182 B371  LOAD APLSFT FILE
  144.   RUN    AC 172 B446  RUN  APLSFT FILE
  145.   GOTO   AB 171 B44C  EXEC (?)
  146.   SAVE   B7 183 B48D  SAVE APLSFT FILE
  147.   STORE  A8 168 B511  BSAVE (WITH A,L)
  148.   RECALL A7 167 B52B  BLOAD, A OPTIONAL
  149.   DEF    B8 184 B544  ?
  150.   PRINT  BA 186 B56C  WRITE TO TEXTFILE
  151.   READ   87 135 B582  READ TEXT FILE
  152.   END    80 128 B5A9  CLOSE A FILE
  153.   DEL    85 133 B5AE  DELETE A FILE
  154.   LEN    E3 227 B5CD  ?
  155.   D      44  68 B620  DRIVE?
  156.   S      53  83 B62E  SLOT?
  157.   NEW    BF 191 B64F  ?
  158.   USR    D5 213 B670  CHG RTN FROM &
  159.  
  160. AS YOU CAN SEE, NOT ALL HAVE BEEN
  161. CHASED DOWN. INTERESTED PARTIES ARE
  162. INVITED TO INVESTIGATE AND SHARE THE
  163. RESULTS WITH US ALL.
  164.  
  165.      BUT THIS, TOO HAS ONLY A LIMITED
  166. VALUE, SINCE WE RUN OUT OF INFORMATIVE
  167. TOKENS AT ABOUT $B679 IN A LISTING THAT
  168. CONTINUES UP TO $BFFF. THE ONLY WAY TO
  169. GET THERE IS TO CALL UP THE INFANTRY
  170. AND SLOG OUR WAY THROUGH THE CODE,
  171. BRUTE FORCE. SINCE IT'S A DOS, THERE
  172. MUST BE READ AND WRITE CODE OF SOME
  173. SORT, SO LOOKING AROUND FOR DISK
  174. ACCESSES ($C08C,X) IS A GOOD PLACE TO
  175. START. THE FIRST ENCOUNTER IS AT $BB6B,
  176. WHICH IS CLEARLY A "WRITE" SECTION--
  177. $C08F,X = OUTPUT; $C08E,X = SENSE WRITE
  178. PROTECT. IT'S FOLLOWED BY A READ SECTOR
  179. ROUTINE AT $BBFD-BC64, AND READ ADDRESS
  180. ROUTINE AT $BC65-BCC0. ON CLOSE
  181. EXAMINATION, IT CAN BE SEEN THAT THE
  182. ROUTINES HAVE BEEN LIFTED ALMOST
  183. VERBATIM FROM DOS 3.2, WITH THE ADDRESS
  184. MARKER CHANGED TO D4 AA B7 (IN MOST
  185. CASES). AHA! MAYBE WE CAN SNEAK IN THE
  186. APPROPRIATE ROUTINES FROM DOS 3.3 AND
  187. MAKE IT DO D5 AA 96'S? TO MAKE A
  188. LENGTHY STORY SHORT, THE ANSWER IS YES,
  189. BUT. DOS 3.2 USES, AS YOU PROBABLY
  190. KNOW, "6+2" NIBBLIZING IN STORING DATA
  191. ON THE DISK, WHILE 3.3 USES "5+3". THE
  192. END RESULT IS THAT THE PRE- AND
  193. POST-NIBBLIZING ROUTINES MUST BE
  194. TRANSPLANTED FROM DOS 3.3, AS WELL AS
  195. BOTH READ AND WRITE BYTE TRANSLATE
  196. TABLES. THE ADDRESS MARKERS AND THE
  197. SIZE OF THE NIBBLE BUFFERS MUST ALSO BE
  198. ADJUSTED. WHEN THIS IS DONE (WITH MUCH
  199. WAILING AND GNASHING OF TEETH), THE END
  200. RESULT IS A FUNCTIONAL, DOS 3.3
  201. COMPATIBLE RDOS: RDOS 3.3.
  202.  
  203.      (AS A BRIEF ASIDE, THE ESSENTIAL
  204. TOOLS IN THIS TASK ARE (OF COURSE),
  205. BENEATH APPLE DOS, AND THE DOSSOURCE
  206. COMMENTED LISTING OF ALL THE DOS CODE).
  207.  
  208.      NOW, WE KNOW FROM PREVIOUS GAMES
  209. LIKE CRISIS MOUNTAIN AND MING'S
  210. CHALLENGE THAT WE CAN READ THE SECTORS
  211. INTO MEMORY FROM A DISK WITH MODIFIED
  212. RWTS ROUTINES BY USING ITS OWN RWTS AND
  213. THE INSPECTOR, THEN SWAPPING RWTS
  214. ROUTINES TO STANDARD DOS 3.3 AND
  215. WRITING THEM OUT AGAIN ON A FORMATTED
  216. DISK. THE PROSPECT OF DOING ALL THE SSI
  217. GAMES BY HAND BOGGLES THE MIND,
  218. HOWEVER, AND REQUIRES AN AUTOMATED
  219. APPROACH (THEY WERE SUPPOSED TO WORK
  220. FOR ->US<-, REMEMBER?). THE ANSWER TO
  221. THIS PROBLEM WAS THE PROGRAM NOW KNOWN
  222. AS COPYB - A HIGHLY MODIFIED VERSION OF
  223. COPYA WHICH DOES THE RWTS SWAP FOR YOU,
  224. AND EVEN INITIALIZES DISKS AS A BONUS.
  225. THE VERSION OF COPYB IN GENERAL
  226. CIRCULATION INCLUDES RWTS ROUTINES
  227. WHICH HAVE BEEN MODIFIED FOR READING
  228. AND WRITING RDOS. REASONABLE DIRECTIONS
  229. ARE INCLUDED ON THE DISK, SO IT SHOULD
  230. BE POSSIBLE TO BACK UP YOUR OWN SSI
  231. DISKS, USING THE ADDITIONAL INFORMATION
  232. PROVIDED BELOW.
  233.  
  234.      ARMED WITH RDOS 3.3 AND COPYB, IT
  235. IS NOW POSSIBLE TO BEGIN ATTACKING ONE
  236. OF THE SSI PROTECTED DISKS. SINCE RDOS
  237. IS BASED ON DOS 3.2, THE DISKS ARE ALL
  238. 13-SECTOR FORMAT, AND SINCE THE DOS IS
  239. ALL ON TRACK ZERO, YOU WANT TO BEGIN
  240. THE TRACK COPYING PROCESS WITH TRACK
  241. ONE. TO REITERATE THE COPYB
  242. INSTRUCTIONS, RUN COPYB, THE TYPE
  243. CTRL-C OR RESET WHEN THE PROMPT FOR
  244. SOURCE DISK COMES UP. GET INTO THE
  245. MONITOR AND TYPE 22E:1 TO SET THE
  246. STARTING TRACK TO 1, THEN, IF THE
  247. ADDRESS MARKER BYTES WERE D4 AA B7,
  248. BLOAD THE FILE CALLED "RDOS READ RWTS"
  249. (IT GOES INTO $8000 AS THE DEFAULT
  250. LOCATION). NEXT, BLOAD "RDOS
  251. WRITE",A$7000, THEN MOVE IT TO THE
  252. NORMAL RWTS LOCATIONS WITH
  253. B700<7000.78FFM (THIS IS NECESSARY
  254. BECAUSE YOU'RE USING THE RWTS ROUTINES
  255. TO READ IN THE FILES; WRITING ON TOP OF
  256. OPERATING CODE CAN LEAD TO VERY
  257. UNPLEASANT RESULTS). RETURN TO BASIC,
  258. DELETE LINE FIVE, AND TYPE 'RUN'.
  259. ANSWER THE QUESTION "13 SECTOR", ENTER
  260. THE APPROPRIATE SLOTS AND DRIVES, AND
  261. YOU'RE OFF AND RUNNING TO CREATE AN
  262. RDOS 3.3 COPY (WHEN YOU'RE FINISHED,
  263. YOU'LL HAVE A 16-SECTOR DISKETTE WITH
  264. ONLY 13 SECTORS OCCUPIED PER TRACK, BUT
  265. YOU WON'T NOTICE IT IN USE).
  266.  
  267.      SOME OF THE SSI GAMES USE THE
  268. NORMAL DOS 3.2 ADDRESS MARKER BYTES OF
  269. D5 AA B5. THESE SHOULD BE READ IN USING
  270. THE "DOS 3.2 RWTS" FILE, BUT YOU STILL
  271. NEED TO USE THE "RDOS WRITE" RWTS FOR
  272. THE WRITING ROUTINE.
  273.  
  274.      RDOS USES TRACK 1 FOR THE CATALOG,
  275. AND IDENTIFIES FILES VIA A 24-CHARACTER
  276. ALPHANUMERIC NAME, A LENGTH IN "BLOCKS"
  277. AS IN PASCAL, AND THE LOCATION OF THE
  278. STARTING BLOCK ON THE DISK:
  279.  
  280. TRACK 01  SECTOR 0     SLOT 6  DRIVE 1
  281.           BUFFER 0800  DOS 16     2BCC
  282. =======================================
  283.  
  284.     0 1 2 3  4 5 6 7  8 9 A B  C D E F
  285. ---------------------------------------
  286. 00- R D O S    2 . 1    C O P  Y R I G
  287. 10- H T   1  9 8 1   B 1A0010 001A0000
  288. 20- S Y S T  E M B O  O T
  289. 30-                  T 0100B1 00011A00
  290. 40- R E G 1
  291.    /                 B 0A6009 DC091B00
  292.   /                 /    \  / \  /\  /
  293.  /         FILE TYPE      \/   \/  \/
  294. PROGRAM    A,T,B          /    / FIRST
  295. NAME                     /    /  BLOCK
  296.                         /  NUMBER
  297.                 STARTING     OF
  298.                 LOCATION   BLOCKS
  299.  
  300.  
  301.  
  302.  
  303. THE STARTING BLOCK IS EQUAL TO THE
  304. TRACK NUMBER MULTIPLIED BY 13 PLUS THE
  305. SECTOR NUMBER (1A00 IS REALLY 001A,
  306. WHICH IS DECIMAL 26, OR TRACK 2, SECTOR
  307. 0). IF YOU LOOK THROUGH THE CATALOG
  308. TRACK WITH THE INSPECTOR, YOU FIND THE
  309. BEGINNING OF THE CATALOG AS EXPECTED IN
  310. T1,S0. LOOKING FOR THE CONTINUATION IN
  311. T1,S1, HOWEVER, BRINGS YOU TO THE NEXT
  312. SURPRISE HELD BY RDOS: THERE IS NO
  313. SECTOR INTERLEAVING IN SOFTWARE; IT IS
  314. ALL DONE BY THE SECTOR NUMBER
  315. SEQUENCING DURING SSI'S INITIALIZE
  316. ROUTINE. THE IMPORTANCE OF SECTOR
  317. INTERLEAVING IS DISCUSSED IN "BAG OF
  318. TRICKS", AND IN A SOFTALK ARTICLE ABOUT
  319. A YEAR AGO BY WORTH AND LECHNER. (DOS
  320. USES A LOOKUP TABLE AT $BFA8 TO CHANGE
  321. THE SECTOR NUMBER READ FROM THE VALUE
  322. READ OFF THE DISK ("PHYSICAL SECTOR")
  323. TO THE NUMBER IT THINKS IT SHOULD BE
  324. ("LOGICAL SECTOR"). SSI USES AN
  325. "ASCENDING 7" INTERLEAVE SCHEME, WHICH
  326. MEANS THAT THE SEQUENCE OF SECTORS ON
  327. THE DISK, AS READ BY DOS 3.3 WITH ITS
  328. INTERLEAVE TABLE, IS:
  329.  
  330. 0,7,E,6,D,5,C,4,B,3,A,2,9,1,8,F.
  331.  
  332. THE SECOND CATALOG SECTOR, THEN,
  333. APPEARS TO BE SECTOR 7. IF YOU INTEND
  334. TO DO ANY AMOUNT OF PLAYING AROUND WITH
  335. ONE OF THESE DISKS, USE THE "RDOS
  336. WRITE" RWTS FROM THE COPYB DISK, OR
  337. CHANGE BYTES $BE2A-BE2D TO $EA'S WITH
  338. THE INSPECTOR. THIS OMITS THE TABLE
  339. LOOKUP AND MAKES THE SECTOR NUMBERS
  340. FOLLOW THE SEQUENCE AS USED BY RDOS.
  341.  
  342.      NEXT, COPY THE FILE CALLED RDOS
  343. 3.3 FROM THE COPYB DISK (OR TRACK 0 OF
  344. ANY OF THE RECENTLY UNPROTECTED SSI
  345. SERIES) ONTO TRACK ZERO, SECTORS 0-D.
  346. YOU WOULD EXPECT TO HAVE A WORKING COPY
  347. OF THE GAME AT THIS POINT, BUT THERE
  348. ARE STILL A COUPLE OF SURPRISES IN
  349. STORE FOR YOU (I SAID IT WAS A
  350. CHALLENGE!). THERE ARE SEVERAL
  351. DIFFERENT SECONDARY PROTECTION SCHEMES
  352. USED TO DEFEAT VARIOUS COPIERS, USUALLY
  353. GOING UNDER THE INNOCUOUS NAME OF
  354. "QWERTY". THE MOST COMMON OF THESE
  355. READS IN AN ADDRESS FIELD FROM TRACK 0,
  356. DELAYS A BIT, AND LOOKS FOR AN $EE AS
  357. THE NEXT BYTE ON THE TRACK. IF IT FINDS
  358. IT, A 0 IS STORED IN LOCATION 0,
  359. OTHERWISE THE DISK SPINS FOREVER. BY
  360. CHANGING BYTES $28-29 TO A9 00, THIS
  361. ANNOYANCE IS REMOVED.  A SIMILAR
  362. ROUTINE, SEEN ONLY ONCE OR TWICE, IS
  363. CALLED @WERTY, LOOKS FOR AN $AA
  364. FOLLOWING THE ADDRESS FIELD ON ANY
  365. TRACK, AND REBOOTS IF IT'S NOT FOUND.
  366. THE REMEDY HERE IS TO PUT A9 00 IN
  367. BYTES $20-21.
  368.  
  369.      RECENTLY, A MUCH MORE
  370. SOPHISTICATED TECHNIQUE HAS BEEN USED
  371. (GALACTIC GLADIATORS, ROAD TO
  372. GETTYSBURG), WHICH DOES THE SSI
  373. EQUIVALENT OF "QUARTER-TRACKING" OR
  374. "SPIRALLING". THIS VERSION OF QWERTY
  375. READS IN FOUR PAGES OF SEQUENCIAL BYTES
  376. FROM EACH OF THE FOUR ADJACENT
  377. HALF-TRACKS FROM 20.5 TO 22.0, STORING
  378. THEM AT $1000-1FFF. THE THREE BYTES
  379. FOLLOWING THE FOUR PAGES WORTH ARE USED
  380. AS THE ADDRESS MARKER FOR THE DATA ON
  381. THE NEXT HALF-TRACK (AS WITH ALL THESE
  382. PROTECTION TECHNIQUES, THE "SECTORS"
  383. ARE SKEWED SO THAT THERE IS NEVER VALID
  384. DATA OVERLAPPING ON ADJACENT
  385. HALF-TRACKS). THIS APPROACH EFFECTIVELY
  386. DEFEATS COPIERS LIKE NA II AND
  387. LOCKSMITH, WHICH WRITE AN ENTIRE TRACK
  388. AND OBLITERATE DATA ON ANY ADJACENT
  389. HALF-TRACK. AFTER READING IN THE DATA,
  390. THE MEMORY VALUES ARE EXCLUSIVE-ORED
  391. WITH THE ADDRESS (1000 CONTAINS 00,
  392. 1001 CONTAINS 01, ETC.), AND IF AN
  393. ERROR IS FOUND, IT REBOOTS THE DISK.
  394. PLACING AN RTS ($60) AT THE ENTRY POINT
  395. OF $A0F0 WILL AVOID THE ENTIRE ISSUE
  396. AND MAKE THE COPYA VERSION RUN.
  397.  
  398.      THE FINAL (I HOPE) HURDLE TO USING
  399. RDOS 3.3 IS THE PROGRAM WHICH
  400. INITIALIZES A SAVE GAME DISKETTE IN
  401. AN RDOS-COMPATIBLE FORMAT. IT IS CALLED
  402. SSI.INIT AND LOADS INTO $800-AFF (IT IS
  403. USUALLY ACCESSED VIA A 'CALL 2800' FROM
  404. A BASIC PROGRAM). SINCE IT ONLY WRITES
  405. ADDRESS FIELDS, AND NOT DATA SECTORS
  406. (WITH NO VERIFY), IT IS A VERY FAST
  407. INIT. ALL THAT'S NECESSARY TO GENERATE
  408. A DISK COMPATIBLE WITH RDOS 3.3 IS TO
  409. REPLACE THE D4 AA B7 (OR D5 AA B5)
  410. ADDRESS MARKER BYTE WITH D5 AA 96:
  411. CHANGE BYTES $8F5 TO $D5 AND $8FF TO
  412. $96.
  413.  
  414.      NOW FOR THE BAD NEWS: WHILE RDOS
  415. IS FAST, PRIMARILY BECAUSE ALL FILES
  416. ARE STORED IN SEQUENCIAL BLOCKS, RDOS
  417. 3.3 IS SLOW BECAUSE OF THE SECTOR
  418. INTERLEAVE USED BY SSI (THE DISK MUST
  419. MAKE AN ALMOST AN ENTIRE REVOLUTION FOR
  420. EACH SECTOR THAT IS READ IN). IT IS
  421. FAIRLY EASY TO ADD AN INTERLEAVE LOOKUP
  422. TABLE TO RDOS 3.3 (IT'S CALLED RDOS
  423. 3.3A ON THE DISK), BUT BAD THINGS
  424. HAPPENED DURING MY ATTEMPTS TO
  425. INCORPORATE IT INTO THE SSI.INIT
  426. PROGRAM. THE CODE FROM $851 TO $86B
  427. NEEDS MORE ALTERATION THAN I HAD
  428. PATIENCE FOR (THERE'S ROOM FOR A PATCH
  429. IN $9D7-9FF), AND WOULD BE WORTH THE
  430. EFFORT IF SOME AMBITIOUS KRACKIST OUT
  431. THERE COULD FIND THE TIME...
  432.  
  433.      FINALLY, AS A TYPICAL EXAMPLE OF
  434. MURPHY'S LAW ("IF ANYTHING CAN GO
  435. WRONG, IT WILL, AND AT THE WORST
  436. POSSIBLE MOMENT), THAT AFTER DOING ALL
  437. THIS AND CONVERTING SOME 20 GAMES, THE
  438. VERY LAST ONE I TRIED WAS GERMANY 1985.
  439. THIS IS A FAIRLY RECENT PUBLICATION OF
  440. SSI WHICH IS COMPLETELY WRITTEN IN
  441. MACHINE LANGUAGE, DOES NOT USE RDOS AT
  442. ALL, AND WILL REQUIRE A TOTALLY
  443. DIFFERENT APPROACH TO UNPROTECTION.OCATION   BLOCKS
  444.  
  445.  
  446.  
  447.  
  448. THE STARTING BLOCK IS EQUAL TO THE
  449. TRACK NUMBER MULTIPLIED BY 13 PLUS THE
  450. SECTOR NUMBER (1A00 IS REALLY 001A,
  451. WHICH IS DECIMAL 26, OR TRACK 2, SECTOR
  452. 0). IF YOU LOOK THROUGH THE CATALOG
  453. TRACK WITH THE INSPECTOR, YOU FIND THE
  454. BEGINNING OF THE CATALOG AS EXPECTED IN
  455. T1,S0. LOOKING FOR THE CONTINUATION IN
  456. T1,S1, HOWEVER, BRINGS YOU TO THE NEXT
  457. SURPRISE HELD BY RDOS: THERE IS NO
  458. SECTOR INTERLEAVING IN SOFTWARE; IT IS
  459. ALL DONE BY THE SECTOR NUMBER
  460. SEQUENCING DURING SSI'S INITIALIZE
  461. ROUTINE. THE IMPORTANCE OF SECTOR
  462. INTERLEAVING IS DISCUSSED IN "BAG OF
  463. TRICKS", AND IN A SOFTALK ARTICLE ABOUT
  464. A YEAR AGO BY WORTH AND LECHNER. (DOS
  465. USES A LOOKUP TABLE AT $BFA8 TO CHANGE
  466. THE SECTOR NUMBER READ FROM THE VALUE
  467. READ OFF THE DISK ("PHYSICAL SECTOR")
  468. TO THE NUMBER IT THINKS IT SHOULD BE
  469. ("LOGICAL SECTOR"). SSI USES AN
  470. "ASCENDING 7" INTERLEAVE SCHEME, WHICH
  471. MEANS THAT THE SEQUENCE OF SECTORS ON
  472. THE DISK, AS READ BY DOS 3.3 WITH ITS
  473. INTERLEAVE TABLE, IS:
  474.  
  475. 0,7,E,6,D,5,C,4,B,3,A,2,9,1,8,F.
  476.  
  477. THE SECOND CATALOG SECTOR, THEN,
  478. APPEARS TO BE SECTOR 7. IF YOU INTEND
  479. TO DO ANY AMOUNT OF PLAYING AROUND WITH
  480. ONE OF THESE DISKS, USE THE "RDOS
  481. WRITE" RWTS FROM THE COPYB DISK, OR
  482. CHANGE BYTES $BE2A-BE2D TO $EA'S WITH
  483. THE INSPECTOR. THIS OMITS THE TABLE
  484. LOOKUP AND MAKES THE SECTOR NUMBERS
  485. FOLLOW THE SEQUENCE AS USED BY RDOS.
  486.  
  487.      NEXT, COPY THE FILE CALLED RDOS
  488. 3.3 FROM THE COPYB DISK (OR TRACK 0 OF
  489. ANY OF THE RECENTLY UNPROTECTED SSI
  490. SERIES) ONTO TRACK ZERO, SECTORS 0-D.
  491. YOU WOULD EXPECT TO HAVE A WORKING COPY
  492. OF THE GAME AT THIS POINT, BUT THERE
  493. ARE STILL A COUPLE OF SURPRISES IN
  494. STORE FOR YOU (I SAID IT WAS A
  495. CHALLENGE!). THERE ARE SEVERAL
  496. DIFFERENT SECONDARY PROTECTION SCHEMES
  497. USED TO DEFEAT VARIOUS COPIERS, USUALLY
  498. GOING UNDER THE INNOCUOUS NAME OF
  499. "QWERTY". THE MOST COMMON OF THESE
  500. READS IN AN ADDRESS FIELD FROM TRACK 0,
  501. DELAYS A BIT, AND LOOKS FOR AN $EE AS
  502. THE NEXT BYTE ON THE TRACK. IF IT FINDS
  503. IT, A 0 IS STORED IN LOCATION 0,
  504. OTHERWISE THE DISK SPINS FOREVER. BY
  505. CHANGING BYTES $28-29 TO A9 00, THIS
  506. ANNOYANCE IS REMOVED.  A SIMILAR
  507. ROUTINE, SEEN ONLY ONCE OR TWICE, IS
  508. CALLED @WERTY, LOOKS FOR AN $AA
  509. FOLLOWING THE ADDRESS FIELD ON ANY
  510. TRACK, AND REBOOTS IF IT'S NOT FOUND.
  511. THE REMEDY HERE IS TO PUT A9 00 IN
  512. BYTES $20-21.
  513.  
  514.      RECENTLY, A MUCH MORE
  515. SOPHISTICATED TECHNIQUE HAS BEEN USED
  516. (GALACTIC GLADIATORS, ROAD TO
  517. GETTYSBURG), WHICH DOES THE SSI
  518. EQUIVALENT OF "QUARTER-TRACKING" OR
  519. "SPIRALLING". THIS VERSION OF QWERTY
  520. READS IN FOUR PAGES OF SEQUENCIAL BYTES
  521. FROM EACH OF THE FOUR ADJACENT
  522. HALF-TRACKS FROM 20.5 TO 22.0, STORING
  523. THEM AT $1000-1FFF. THE THREE BYTES
  524. FOLLOWING THE FOUR PAGES WORTH ARE USED
  525. AS THE ADDRESS MARKER FOR THE DATA ON
  526. THE NEXT HALF-TRACK (AS WITH ALL THESE
  527. PROTECTION TECHNIQUES, THE "SECTORS"
  528. ARE SKEWED SO THAT THERE IS NEVER VALID
  529. DATA OVERLAPPING ON ADJACENT
  530. HALF-TRACKS). THIS APPROACH EFFECTIVELY
  531. DEFEATS COPIERS LIKE NA II AND
  532. LOCKSMITH, WHICH WRITE AN ENTIRE TRACK
  533. AND OBLITERATE DATA ON ANY ADJACENT
  534. HALF-TRACK. AFTER READING IN THE DATA,
  535. THE MEMORY VALUES ARE EXCLUSIVE-ORED
  536. WITH THE ADDRESS (1000 CONTAINS 00,
  537. 1001 CONTAINS 01, ETC.), AND IF AN
  538. ERROR IS FOUND, IT REBOOTS THE DISK.
  539. PLACING AN RTS ($60) AT THE ENTRY POINT
  540. OF $A0F0 WILL AVOID THE ENTIRE ISSUE
  541. AND MAKE THE COPYA VERSION RUN.
  542.  
  543.      THE FINAL (I HOPE) HURDLE TO USING
  544. RDOS 3.3 IS THE PROGRAM WHICH
  545. INITIALIZES A SAVE GAME DISKETTE IN
  546. AN RDOS-COMPATIBLE FORMAT. IT IS CALLED
  547. SSI.INIT AND LOADS INTO $800-AFF (IT IS
  548. USUALLY ACCESSED VIA A 'CALL 2800' FROM
  549. A BASIC PROGRAM). SINCE IT ONLY WRITES
  550. ADDRESS FIELDS, AND NOT DATA SECTORS
  551. (WITH NO VERIFY), IT IS A VERY FAST
  552. INIT. ALL THAT'S NECESSARY TO GENERATE
  553. A DISK COMPATIBLE WITH RDOS 3.3 IS TO
  554. REPLACE THE D4 AA B7 (OR D5 AA B5)
  555. ADDRESS MARKER BYTE WITH D5 AA 96:
  556. CHANGE BYTES $8F5 TO $D5 AND $8FF TO
  557. $96.
  558.  
  559.      NOW FOR THE BAD NEWS: WHILE RDOS
  560. IS FAST, PRIMARILY BECAUSE ALL FILES
  561. ARE STORED IN SEQUENCIAL BLOCKS, RDOS
  562. 3.3 IS SLOW BECAUSE OF THE SECTOR
  563. INTERLEAVE USED BY SSI (THE DISK MUST
  564. MAKE AN ALMOST AN ENTIRE REVOLUTION FOR
  565. EACH SECTOR THAT IS READ IN). IT IS
  566. FAIRLY EASY TO ADD AN INTERLEAVE LOOKUP
  567. TABLE TO RDOS 3.3 (IT'S CALLED RDOS
  568. 3.3A ON THE DISK), BUT BAD THINGS
  569. HAPPENED DURING MY ATTEMPTS TO
  570. INCORPORATE IT INTO THE SSI.INIT
  571. PROGRAM. THE CODE FROM $851 TO $86B
  572. NEEDS MORE ALTERATION THAN I HAD
  573. PATIENCE FOR (THERE'S ROOM FOR A PATCH
  574. IN $9D7-9FF), AND WOULD BE WORTH THE
  575. EFFORT IF SOME AMBITIOUS KRACKIST OUT
  576. THERE COULD FIND THE TIME...
  577.  
  578.      FINALLY, AS A TYPICAL EXAMPLE OF
  579. MURPHY'S LAW ("IF ANYTHING CAN GO
  580. WRONG, IT WILL, AND AT THE WORST
  581. POSSIBLE MOMENT), THAT AFTER DOING ALL
  582. THIS AND CONVERTING SOME 20 GAMES, THE
  583. VERY LAST ONE I TRIED WAS GERMANY 1985.
  584. THIS IS A FAIRLY RECENT PUBLICATION OF
  585. SSI WHICH IS COMPLETELY WRITTEN IN
  586. MACHINE LANGUAGE, DOES NOT USE RDOS AT
  587. ALL, AND WILL REQUIRE A TOTALLY
  588. DIFFERENT APPROACH TO UNPROTECTION. IN
  589. THE WORDS OF RICKY SKAGGS
  590. ("HEARTBROKE", FROM HIS "HIGHWAYS AND
  591. HEARTACHES" ALBUM):
  592.  
  593.      "PRIDE, WHEN YOU'RE RICH,
  594.        IS A BORE WHEN YOU'RE LONELY,
  595.       STILL MADNESS PREVAILS UPON
  596.        REASON TO YIELD.
  597.  
  598.       BUT ALL IS NOT LOST, IT IS ONLY
  599.        MISTAKEN,
  600.       IT'S A SMALL CONSOLATION, BUT I
  601.        KNOW JUST HOW YOU FEEL.
  602.  
  603.  
  604.       NOBODY SAID IT WAS GOING TO BE
  605.        EASY,
  606.       WE ALL HAVE OUR WEAK SIDES AND
  607.        NEED SOME GOOD TOUCHIN'.
  608.  
  609.       NOBODY SAID THAT IT WOULD NOT BE
  610.        WORTH IT,
  611.       THE HUMAN CONDITIONS -- CONTINUE
  612.        AS SUCH."
  613.  
  614.  
  615.      SEE YOU "SOON" WITH ANOTHER IN THE
  616. BASICS OF KRACKING SERIES--"WHERE DO I
  617. BEGIN..."
  618. 
  619.  
  620.  
  621. (?=TOPICS, 1-25) ->: 
  622.